↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
ackermann_in_gag(0, N, s(N)) → ackermann_out_gag(0, N, s(N))
ackermann_in_gag(s(M), 0, Val) → U1_gag(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(0, N, s(N)) → ackermann_out_agg(0, N, s(N))
ackermann_in_agg(s(M), 0, Val) → U1_agg(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(s(M), s(N), Val) → U2_agg(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(0, N, s(N)) → ackermann_out_gaa(0, N, s(N))
ackermann_in_gaa(s(M), 0, Val) → U1_gaa(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(0, N, s(N)) → ackermann_out_aga(0, N, s(N))
ackermann_in_aga(s(M), 0, Val) → U1_aga(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(s(M), s(N), Val) → U2_aga(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(s(M), s(N), Val) → U2_gaa(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gaa(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gaa(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_gaa(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s(M), s(N), Val)
U2_aga(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_aga(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_aga(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s(M), s(N), Val)
U1_aga(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_aga(s(M), 0, Val)
U1_gaa(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_gaa(s(M), 0, Val)
U2_agg(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_agg(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_agg(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_agg(s(M), s(N), Val)
U1_agg(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_agg(s(M), 0, Val)
U1_gag(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_gag(s(M), 0, Val)
ackermann_in_gag(s(M), s(N), Val) → U2_gag(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gag(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gag(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_gag(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_gag(s(M), s(N), Val)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
ackermann_in_gag(0, N, s(N)) → ackermann_out_gag(0, N, s(N))
ackermann_in_gag(s(M), 0, Val) → U1_gag(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(0, N, s(N)) → ackermann_out_agg(0, N, s(N))
ackermann_in_agg(s(M), 0, Val) → U1_agg(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(s(M), s(N), Val) → U2_agg(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(0, N, s(N)) → ackermann_out_gaa(0, N, s(N))
ackermann_in_gaa(s(M), 0, Val) → U1_gaa(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(0, N, s(N)) → ackermann_out_aga(0, N, s(N))
ackermann_in_aga(s(M), 0, Val) → U1_aga(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(s(M), s(N), Val) → U2_aga(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(s(M), s(N), Val) → U2_gaa(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gaa(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gaa(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_gaa(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s(M), s(N), Val)
U2_aga(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_aga(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_aga(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s(M), s(N), Val)
U1_aga(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_aga(s(M), 0, Val)
U1_gaa(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_gaa(s(M), 0, Val)
U2_agg(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_agg(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_agg(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_agg(s(M), s(N), Val)
U1_agg(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_agg(s(M), 0, Val)
U1_gag(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_gag(s(M), 0, Val)
ackermann_in_gag(s(M), s(N), Val) → U2_gag(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gag(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gag(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_gag(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_gag(s(M), s(N), Val)
ACKERMANN_IN_GAG(s(M), 0, Val) → U1_GAG(M, Val, ackermann_in_agg(M, s(0), Val))
ACKERMANN_IN_GAG(s(M), 0, Val) → ACKERMANN_IN_AGG(M, s(0), Val)
ACKERMANN_IN_AGG(s(M), 0, Val) → U1_AGG(M, Val, ackermann_in_agg(M, s(0), Val))
ACKERMANN_IN_AGG(s(M), 0, Val) → ACKERMANN_IN_AGG(M, s(0), Val)
ACKERMANN_IN_AGG(s(M), s(N), Val) → U2_AGG(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_AGG(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
ACKERMANN_IN_GAA(s(M), 0, Val) → U1_GAA(M, Val, ackermann_in_aga(M, s(0), Val))
ACKERMANN_IN_GAA(s(M), 0, Val) → ACKERMANN_IN_AGA(M, s(0), Val)
ACKERMANN_IN_AGA(s(M), 0, Val) → U1_AGA(M, Val, ackermann_in_aga(M, s(0), Val))
ACKERMANN_IN_AGA(s(M), 0, Val) → ACKERMANN_IN_AGA(M, s(0), Val)
ACKERMANN_IN_AGA(s(M), s(N), Val) → U2_AGA(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_AGA(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
ACKERMANN_IN_GAA(s(M), s(N), Val) → U2_GAA(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_GAA(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
U2_GAA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_GAA(M, N, Val, ackermann_in_aga(M, Val1, Val))
U2_GAA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGA(M, Val1, Val)
U2_AGA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_AGA(M, N, Val, ackermann_in_aga(M, Val1, Val))
U2_AGA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGA(M, Val1, Val)
U2_AGG(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_AGG(M, N, Val, ackermann_in_agg(M, Val1, Val))
U2_AGG(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGG(M, Val1, Val)
ACKERMANN_IN_GAG(s(M), s(N), Val) → U2_GAG(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_GAG(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
U2_GAG(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_GAG(M, N, Val, ackermann_in_agg(M, Val1, Val))
U2_GAG(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGG(M, Val1, Val)
ackermann_in_gag(0, N, s(N)) → ackermann_out_gag(0, N, s(N))
ackermann_in_gag(s(M), 0, Val) → U1_gag(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(0, N, s(N)) → ackermann_out_agg(0, N, s(N))
ackermann_in_agg(s(M), 0, Val) → U1_agg(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(s(M), s(N), Val) → U2_agg(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(0, N, s(N)) → ackermann_out_gaa(0, N, s(N))
ackermann_in_gaa(s(M), 0, Val) → U1_gaa(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(0, N, s(N)) → ackermann_out_aga(0, N, s(N))
ackermann_in_aga(s(M), 0, Val) → U1_aga(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(s(M), s(N), Val) → U2_aga(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(s(M), s(N), Val) → U2_gaa(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gaa(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gaa(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_gaa(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s(M), s(N), Val)
U2_aga(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_aga(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_aga(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s(M), s(N), Val)
U1_aga(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_aga(s(M), 0, Val)
U1_gaa(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_gaa(s(M), 0, Val)
U2_agg(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_agg(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_agg(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_agg(s(M), s(N), Val)
U1_agg(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_agg(s(M), 0, Val)
U1_gag(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_gag(s(M), 0, Val)
ackermann_in_gag(s(M), s(N), Val) → U2_gag(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gag(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gag(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_gag(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_gag(s(M), s(N), Val)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
ACKERMANN_IN_GAG(s(M), 0, Val) → U1_GAG(M, Val, ackermann_in_agg(M, s(0), Val))
ACKERMANN_IN_GAG(s(M), 0, Val) → ACKERMANN_IN_AGG(M, s(0), Val)
ACKERMANN_IN_AGG(s(M), 0, Val) → U1_AGG(M, Val, ackermann_in_agg(M, s(0), Val))
ACKERMANN_IN_AGG(s(M), 0, Val) → ACKERMANN_IN_AGG(M, s(0), Val)
ACKERMANN_IN_AGG(s(M), s(N), Val) → U2_AGG(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_AGG(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
ACKERMANN_IN_GAA(s(M), 0, Val) → U1_GAA(M, Val, ackermann_in_aga(M, s(0), Val))
ACKERMANN_IN_GAA(s(M), 0, Val) → ACKERMANN_IN_AGA(M, s(0), Val)
ACKERMANN_IN_AGA(s(M), 0, Val) → U1_AGA(M, Val, ackermann_in_aga(M, s(0), Val))
ACKERMANN_IN_AGA(s(M), 0, Val) → ACKERMANN_IN_AGA(M, s(0), Val)
ACKERMANN_IN_AGA(s(M), s(N), Val) → U2_AGA(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_AGA(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
ACKERMANN_IN_GAA(s(M), s(N), Val) → U2_GAA(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_GAA(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
U2_GAA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_GAA(M, N, Val, ackermann_in_aga(M, Val1, Val))
U2_GAA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGA(M, Val1, Val)
U2_AGA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_AGA(M, N, Val, ackermann_in_aga(M, Val1, Val))
U2_AGA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGA(M, Val1, Val)
U2_AGG(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_AGG(M, N, Val, ackermann_in_agg(M, Val1, Val))
U2_AGG(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGG(M, Val1, Val)
ACKERMANN_IN_GAG(s(M), s(N), Val) → U2_GAG(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_GAG(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
U2_GAG(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_GAG(M, N, Val, ackermann_in_agg(M, Val1, Val))
U2_GAG(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGG(M, Val1, Val)
ackermann_in_gag(0, N, s(N)) → ackermann_out_gag(0, N, s(N))
ackermann_in_gag(s(M), 0, Val) → U1_gag(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(0, N, s(N)) → ackermann_out_agg(0, N, s(N))
ackermann_in_agg(s(M), 0, Val) → U1_agg(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(s(M), s(N), Val) → U2_agg(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(0, N, s(N)) → ackermann_out_gaa(0, N, s(N))
ackermann_in_gaa(s(M), 0, Val) → U1_gaa(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(0, N, s(N)) → ackermann_out_aga(0, N, s(N))
ackermann_in_aga(s(M), 0, Val) → U1_aga(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(s(M), s(N), Val) → U2_aga(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(s(M), s(N), Val) → U2_gaa(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gaa(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gaa(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_gaa(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s(M), s(N), Val)
U2_aga(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_aga(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_aga(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s(M), s(N), Val)
U1_aga(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_aga(s(M), 0, Val)
U1_gaa(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_gaa(s(M), 0, Val)
U2_agg(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_agg(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_agg(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_agg(s(M), s(N), Val)
U1_agg(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_agg(s(M), 0, Val)
U1_gag(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_gag(s(M), 0, Val)
ackermann_in_gag(s(M), s(N), Val) → U2_gag(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gag(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gag(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_gag(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_gag(s(M), s(N), Val)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
ACKERMANN_IN_GAA(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
ACKERMANN_IN_AGA(s(M), s(N), Val) → U2_AGA(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_GAA(s(M), s(N), Val) → U2_GAA(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_AGA(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
U2_AGA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGA(M, Val1, Val)
U2_GAA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGA(M, Val1, Val)
ACKERMANN_IN_AGA(s(M), 0, Val) → ACKERMANN_IN_AGA(M, s(0), Val)
ACKERMANN_IN_GAA(s(M), 0, Val) → ACKERMANN_IN_AGA(M, s(0), Val)
ackermann_in_gag(0, N, s(N)) → ackermann_out_gag(0, N, s(N))
ackermann_in_gag(s(M), 0, Val) → U1_gag(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(0, N, s(N)) → ackermann_out_agg(0, N, s(N))
ackermann_in_agg(s(M), 0, Val) → U1_agg(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(s(M), s(N), Val) → U2_agg(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(0, N, s(N)) → ackermann_out_gaa(0, N, s(N))
ackermann_in_gaa(s(M), 0, Val) → U1_gaa(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(0, N, s(N)) → ackermann_out_aga(0, N, s(N))
ackermann_in_aga(s(M), 0, Val) → U1_aga(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(s(M), s(N), Val) → U2_aga(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(s(M), s(N), Val) → U2_gaa(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gaa(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gaa(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_gaa(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s(M), s(N), Val)
U2_aga(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_aga(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_aga(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s(M), s(N), Val)
U1_aga(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_aga(s(M), 0, Val)
U1_gaa(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_gaa(s(M), 0, Val)
U2_agg(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_agg(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_agg(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_agg(s(M), s(N), Val)
U1_agg(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_agg(s(M), 0, Val)
U1_gag(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_gag(s(M), 0, Val)
ackermann_in_gag(s(M), s(N), Val) → U2_gag(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gag(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gag(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_gag(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_gag(s(M), s(N), Val)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
ACKERMANN_IN_GAA(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
ACKERMANN_IN_AGA(s(M), s(N), Val) → U2_AGA(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_GAA(s(M), s(N), Val) → U2_GAA(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_AGA(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
U2_AGA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGA(M, Val1, Val)
U2_GAA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGA(M, Val1, Val)
ACKERMANN_IN_AGA(s(M), 0, Val) → ACKERMANN_IN_AGA(M, s(0), Val)
ACKERMANN_IN_GAA(s(M), 0, Val) → ACKERMANN_IN_AGA(M, s(0), Val)
ackermann_in_gaa(s(M), 0, Val) → U1_gaa(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_gaa(s(M), s(N), Val) → U2_gaa(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U1_gaa(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_gaa(s(M), 0, Val)
U2_gaa(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gaa(M, N, Val, ackermann_in_aga(M, Val1, Val))
ackermann_in_aga(0, N, s(N)) → ackermann_out_aga(0, N, s(N))
ackermann_in_aga(s(M), s(N), Val) → U2_aga(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U3_gaa(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s(M), s(N), Val)
U2_aga(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_aga(M, N, Val, ackermann_in_aga(M, Val1, Val))
ackermann_in_aga(s(M), 0, Val) → U1_aga(M, Val, ackermann_in_aga(M, s(0), Val))
U3_aga(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s(M), s(N), Val)
U1_aga(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_aga(s(M), 0, Val)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
↳ PiDP
↳ PrologToPiTRSProof
ACKERMANN_IN_AGA(0) → ACKERMANN_IN_AGA(s)
U2_AGA(ackermann_out_gaa(Val1)) → ACKERMANN_IN_AGA(Val1)
ACKERMANN_IN_GAA(s) → U2_GAA(ackermann_in_gaa(s))
ACKERMANN_IN_AGA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_AGA(s) → U2_AGA(ackermann_in_gaa(s))
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_AGA(s)
U2_GAA(ackermann_out_gaa(Val1)) → ACKERMANN_IN_AGA(Val1)
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_gaa(ackermann_out_gaa(Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_aga(ackermann_out_gaa(Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
U1_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
ackermann_in_gaa(x0)
U1_gaa(x0)
U2_gaa(x0)
ackermann_in_aga(x0)
U3_gaa(x0)
U2_aga(x0)
U3_aga(x0)
U1_aga(x0)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ACKERMANN_IN_AGA(0) → ACKERMANN_IN_AGA(s)
Used ordering: Polynomial interpretation [25]:
U2_AGA(ackermann_out_gaa(Val1)) → ACKERMANN_IN_AGA(Val1)
ACKERMANN_IN_GAA(s) → U2_GAA(ackermann_in_gaa(s))
ACKERMANN_IN_AGA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_AGA(s) → U2_AGA(ackermann_in_gaa(s))
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_AGA(s)
U2_GAA(ackermann_out_gaa(Val1)) → ACKERMANN_IN_AGA(Val1)
POL(0) = 1
POL(ACKERMANN_IN_AGA(x1)) = x1
POL(ACKERMANN_IN_GAA(x1)) = 0
POL(U1_aga(x1)) = x1
POL(U1_gaa(x1)) = x1
POL(U2_AGA(x1)) = x1
POL(U2_GAA(x1)) = x1
POL(U2_aga(x1)) = 0
POL(U2_gaa(x1)) = 0
POL(U3_aga(x1)) = x1
POL(U3_gaa(x1)) = x1
POL(ackermann_in_aga(x1)) = 0
POL(ackermann_in_gaa(x1)) = 0
POL(ackermann_out_aga(x1, x2)) = x2
POL(ackermann_out_gaa(x1)) = x1
POL(s) = 0
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U3_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
U1_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
ackermann_in_aga(N) → ackermann_out_aga(0, s)
U2_aga(ackermann_out_gaa(Val1)) → U3_aga(ackermann_in_aga(Val1))
U2_gaa(ackermann_out_gaa(Val1)) → U3_gaa(ackermann_in_aga(Val1))
U1_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ PiDP
↳ PrologToPiTRSProof
U2_AGA(ackermann_out_gaa(Val1)) → ACKERMANN_IN_AGA(Val1)
ACKERMANN_IN_GAA(s) → U2_GAA(ackermann_in_gaa(s))
ACKERMANN_IN_AGA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_AGA(s) → U2_AGA(ackermann_in_gaa(s))
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_AGA(s)
U2_GAA(ackermann_out_gaa(Val1)) → ACKERMANN_IN_AGA(Val1)
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_gaa(ackermann_out_gaa(Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_aga(ackermann_out_gaa(Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
U1_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
ackermann_in_gaa(x0)
U1_gaa(x0)
U2_gaa(x0)
ackermann_in_aga(x0)
U3_gaa(x0)
U2_aga(x0)
U3_aga(x0)
U1_aga(x0)
ACKERMANN_IN_GAA(s) → U2_GAA(U2_gaa(ackermann_in_gaa(s)))
ACKERMANN_IN_GAA(s) → U2_GAA(U1_gaa(ackermann_in_aga(s)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ PiDP
↳ PrologToPiTRSProof
ACKERMANN_IN_GAA(s) → U2_GAA(U2_gaa(ackermann_in_gaa(s)))
U2_AGA(ackermann_out_gaa(Val1)) → ACKERMANN_IN_AGA(Val1)
ACKERMANN_IN_GAA(s) → U2_GAA(U1_gaa(ackermann_in_aga(s)))
ACKERMANN_IN_AGA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_AGA(s) → U2_AGA(ackermann_in_gaa(s))
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_AGA(s)
U2_GAA(ackermann_out_gaa(Val1)) → ACKERMANN_IN_AGA(Val1)
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_gaa(ackermann_out_gaa(Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_aga(ackermann_out_gaa(Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
U1_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
ackermann_in_gaa(x0)
U1_gaa(x0)
U2_gaa(x0)
ackermann_in_aga(x0)
U3_gaa(x0)
U2_aga(x0)
U3_aga(x0)
U1_aga(x0)
ACKERMANN_IN_AGA(s) → U2_AGA(U1_gaa(ackermann_in_aga(s)))
ACKERMANN_IN_AGA(s) → U2_AGA(U2_gaa(ackermann_in_gaa(s)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ ForwardInstantiation
↳ PiDP
↳ PrologToPiTRSProof
ACKERMANN_IN_GAA(s) → U2_GAA(U2_gaa(ackermann_in_gaa(s)))
U2_AGA(ackermann_out_gaa(Val1)) → ACKERMANN_IN_AGA(Val1)
ACKERMANN_IN_AGA(s) → U2_AGA(U2_gaa(ackermann_in_gaa(s)))
ACKERMANN_IN_GAA(s) → U2_GAA(U1_gaa(ackermann_in_aga(s)))
ACKERMANN_IN_AGA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_AGA(s) → U2_AGA(U1_gaa(ackermann_in_aga(s)))
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_AGA(s)
U2_GAA(ackermann_out_gaa(Val1)) → ACKERMANN_IN_AGA(Val1)
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_gaa(ackermann_out_gaa(Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_aga(ackermann_out_gaa(Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
U1_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
ackermann_in_gaa(x0)
U1_gaa(x0)
U2_gaa(x0)
ackermann_in_aga(x0)
U3_gaa(x0)
U2_aga(x0)
U3_aga(x0)
U1_aga(x0)
U2_AGA(ackermann_out_gaa(s)) → ACKERMANN_IN_AGA(s)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ PiDP
↳ PrologToPiTRSProof
U2_AGA(ackermann_out_gaa(s)) → ACKERMANN_IN_AGA(s)
ACKERMANN_IN_GAA(s) → U2_GAA(U2_gaa(ackermann_in_gaa(s)))
ACKERMANN_IN_GAA(s) → U2_GAA(U1_gaa(ackermann_in_aga(s)))
ACKERMANN_IN_AGA(s) → U2_AGA(U2_gaa(ackermann_in_gaa(s)))
ACKERMANN_IN_AGA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_AGA(s) → U2_AGA(U1_gaa(ackermann_in_aga(s)))
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_AGA(s)
U2_GAA(ackermann_out_gaa(Val1)) → ACKERMANN_IN_AGA(Val1)
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_gaa(ackermann_out_gaa(Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_aga(ackermann_out_gaa(Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
U1_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
ackermann_in_gaa(x0)
U1_gaa(x0)
U2_gaa(x0)
ackermann_in_aga(x0)
U3_gaa(x0)
U2_aga(x0)
U3_aga(x0)
U1_aga(x0)
U2_GAA(ackermann_out_gaa(s)) → ACKERMANN_IN_AGA(s)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PrologToPiTRSProof
U2_AGA(ackermann_out_gaa(s)) → ACKERMANN_IN_AGA(s)
ACKERMANN_IN_GAA(s) → U2_GAA(U2_gaa(ackermann_in_gaa(s)))
ACKERMANN_IN_AGA(s) → U2_AGA(U2_gaa(ackermann_in_gaa(s)))
ACKERMANN_IN_GAA(s) → U2_GAA(U1_gaa(ackermann_in_aga(s)))
ACKERMANN_IN_AGA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_AGA(s) → U2_AGA(U1_gaa(ackermann_in_aga(s)))
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_AGA(s)
U2_GAA(ackermann_out_gaa(s)) → ACKERMANN_IN_AGA(s)
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_gaa(ackermann_out_gaa(Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_aga(ackermann_out_gaa(Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
U1_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
ackermann_in_gaa(x0)
U1_gaa(x0)
U2_gaa(x0)
ackermann_in_aga(x0)
U3_gaa(x0)
U2_aga(x0)
U3_aga(x0)
U1_aga(x0)
U2_AGA(ackermann_out_gaa(s)) → ACKERMANN_IN_AGA(s)
ACKERMANN_IN_GAA(s) → U2_GAA(U2_gaa(ackermann_in_gaa(s)))
ACKERMANN_IN_AGA(s) → U2_AGA(U2_gaa(ackermann_in_gaa(s)))
ACKERMANN_IN_GAA(s) → U2_GAA(U1_gaa(ackermann_in_aga(s)))
ACKERMANN_IN_AGA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_AGA(s) → U2_AGA(U1_gaa(ackermann_in_aga(s)))
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_AGA(s)
U2_GAA(ackermann_out_gaa(s)) → ACKERMANN_IN_AGA(s)
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_gaa(ackermann_out_gaa(Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_aga(ackermann_out_gaa(Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
U1_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
ACKERMANN_IN_AGG(s(M), s(N), Val) → U2_AGG(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_AGG(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGG(M, Val1, Val)
ACKERMANN_IN_AGG(s(M), 0, Val) → ACKERMANN_IN_AGG(M, s(0), Val)
ackermann_in_gag(0, N, s(N)) → ackermann_out_gag(0, N, s(N))
ackermann_in_gag(s(M), 0, Val) → U1_gag(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(0, N, s(N)) → ackermann_out_agg(0, N, s(N))
ackermann_in_agg(s(M), 0, Val) → U1_agg(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(s(M), s(N), Val) → U2_agg(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(0, N, s(N)) → ackermann_out_gaa(0, N, s(N))
ackermann_in_gaa(s(M), 0, Val) → U1_gaa(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(0, N, s(N)) → ackermann_out_aga(0, N, s(N))
ackermann_in_aga(s(M), 0, Val) → U1_aga(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(s(M), s(N), Val) → U2_aga(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(s(M), s(N), Val) → U2_gaa(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gaa(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gaa(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_gaa(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s(M), s(N), Val)
U2_aga(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_aga(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_aga(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s(M), s(N), Val)
U1_aga(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_aga(s(M), 0, Val)
U1_gaa(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_gaa(s(M), 0, Val)
U2_agg(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_agg(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_agg(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_agg(s(M), s(N), Val)
U1_agg(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_agg(s(M), 0, Val)
U1_gag(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_gag(s(M), 0, Val)
ackermann_in_gag(s(M), s(N), Val) → U2_gag(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gag(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gag(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_gag(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_gag(s(M), s(N), Val)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
ACKERMANN_IN_AGG(s(M), s(N), Val) → U2_AGG(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_AGG(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGG(M, Val1, Val)
ACKERMANN_IN_AGG(s(M), 0, Val) → ACKERMANN_IN_AGG(M, s(0), Val)
ackermann_in_gaa(s(M), 0, Val) → U1_gaa(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_gaa(s(M), s(N), Val) → U2_gaa(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U1_gaa(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_gaa(s(M), 0, Val)
U2_gaa(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gaa(M, N, Val, ackermann_in_aga(M, Val1, Val))
ackermann_in_aga(0, N, s(N)) → ackermann_out_aga(0, N, s(N))
ackermann_in_aga(s(M), s(N), Val) → U2_aga(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U3_gaa(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s(M), s(N), Val)
U2_aga(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_aga(M, N, Val, ackermann_in_aga(M, Val1, Val))
ackermann_in_aga(s(M), 0, Val) → U1_aga(M, Val, ackermann_in_aga(M, s(0), Val))
U3_aga(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s(M), s(N), Val)
U1_aga(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_aga(s(M), 0, Val)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
↳ PrologToPiTRSProof
ACKERMANN_IN_AGG(0, Val) → ACKERMANN_IN_AGG(s, Val)
U2_AGG(Val, ackermann_out_gaa(Val1)) → ACKERMANN_IN_AGG(Val1, Val)
ACKERMANN_IN_AGG(s, Val) → U2_AGG(Val, ackermann_in_gaa(s))
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_gaa(ackermann_out_gaa(Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_aga(ackermann_out_gaa(Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
U1_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
ackermann_in_gaa(x0)
U1_gaa(x0)
U2_gaa(x0)
ackermann_in_aga(x0)
U3_gaa(x0)
U2_aga(x0)
U3_aga(x0)
U1_aga(x0)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ACKERMANN_IN_AGG(0, Val) → ACKERMANN_IN_AGG(s, Val)
Used ordering: Polynomial interpretation [25]:
U2_AGG(Val, ackermann_out_gaa(Val1)) → ACKERMANN_IN_AGG(Val1, Val)
ACKERMANN_IN_AGG(s, Val) → U2_AGG(Val, ackermann_in_gaa(s))
POL(0) = 1
POL(ACKERMANN_IN_AGG(x1, x2)) = x1
POL(U1_aga(x1)) = x1
POL(U1_gaa(x1)) = x1
POL(U2_AGG(x1, x2)) = x2
POL(U2_aga(x1)) = x1
POL(U2_gaa(x1)) = x1
POL(U3_aga(x1)) = x1
POL(U3_gaa(x1)) = x1
POL(ackermann_in_aga(x1)) = 0
POL(ackermann_in_gaa(x1)) = 0
POL(ackermann_out_aga(x1, x2)) = x2
POL(ackermann_out_gaa(x1)) = x1
POL(s) = 0
U1_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U1_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U3_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
ackermann_in_aga(N) → ackermann_out_aga(0, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U2_aga(ackermann_out_gaa(Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
U2_gaa(ackermann_out_gaa(Val1)) → U3_gaa(ackermann_in_aga(Val1))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ PrologToPiTRSProof
U2_AGG(Val, ackermann_out_gaa(Val1)) → ACKERMANN_IN_AGG(Val1, Val)
ACKERMANN_IN_AGG(s, Val) → U2_AGG(Val, ackermann_in_gaa(s))
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_gaa(ackermann_out_gaa(Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_aga(ackermann_out_gaa(Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
U1_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
ackermann_in_gaa(x0)
U1_gaa(x0)
U2_gaa(x0)
ackermann_in_aga(x0)
U3_gaa(x0)
U2_aga(x0)
U3_aga(x0)
U1_aga(x0)
ACKERMANN_IN_AGG(s, y0) → U2_AGG(y0, U1_gaa(ackermann_in_aga(s)))
ACKERMANN_IN_AGG(s, y0) → U2_AGG(y0, U2_gaa(ackermann_in_gaa(s)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ QDP
↳ ForwardInstantiation
↳ PrologToPiTRSProof
ACKERMANN_IN_AGG(s, y0) → U2_AGG(y0, U1_gaa(ackermann_in_aga(s)))
U2_AGG(Val, ackermann_out_gaa(Val1)) → ACKERMANN_IN_AGG(Val1, Val)
ACKERMANN_IN_AGG(s, y0) → U2_AGG(y0, U2_gaa(ackermann_in_gaa(s)))
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_gaa(ackermann_out_gaa(Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_aga(ackermann_out_gaa(Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
U1_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
ackermann_in_gaa(x0)
U1_gaa(x0)
U2_gaa(x0)
ackermann_in_aga(x0)
U3_gaa(x0)
U2_aga(x0)
U3_aga(x0)
U1_aga(x0)
U2_AGG(x0, ackermann_out_gaa(s)) → ACKERMANN_IN_AGG(s, x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ NonTerminationProof
↳ PrologToPiTRSProof
ACKERMANN_IN_AGG(s, y0) → U2_AGG(y0, U1_gaa(ackermann_in_aga(s)))
U2_AGG(x0, ackermann_out_gaa(s)) → ACKERMANN_IN_AGG(s, x0)
ACKERMANN_IN_AGG(s, y0) → U2_AGG(y0, U2_gaa(ackermann_in_gaa(s)))
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_gaa(ackermann_out_gaa(Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_aga(ackermann_out_gaa(Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
U1_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
ackermann_in_gaa(x0)
U1_gaa(x0)
U2_gaa(x0)
ackermann_in_aga(x0)
U3_gaa(x0)
U2_aga(x0)
U3_aga(x0)
U1_aga(x0)
ACKERMANN_IN_AGG(s, y0) → U2_AGG(y0, U1_gaa(ackermann_in_aga(s)))
U2_AGG(x0, ackermann_out_gaa(s)) → ACKERMANN_IN_AGG(s, x0)
ACKERMANN_IN_AGG(s, y0) → U2_AGG(y0, U2_gaa(ackermann_in_gaa(s)))
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_gaa(ackermann_out_gaa(Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val)) → ackermann_out_gaa(Val)
U2_aga(ackermann_out_gaa(Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
U1_aga(ackermann_out_aga(M, Val)) → ackermann_out_aga(s, Val)
ackermann_in_gag(0, N, s(N)) → ackermann_out_gag(0, N, s(N))
ackermann_in_gag(s(M), 0, Val) → U1_gag(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(0, N, s(N)) → ackermann_out_agg(0, N, s(N))
ackermann_in_agg(s(M), 0, Val) → U1_agg(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(s(M), s(N), Val) → U2_agg(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(0, N, s(N)) → ackermann_out_gaa(0, N, s(N))
ackermann_in_gaa(s(M), 0, Val) → U1_gaa(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(0, N, s(N)) → ackermann_out_aga(0, N, s(N))
ackermann_in_aga(s(M), 0, Val) → U1_aga(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(s(M), s(N), Val) → U2_aga(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(s(M), s(N), Val) → U2_gaa(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gaa(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gaa(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_gaa(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s(M), s(N), Val)
U2_aga(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_aga(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_aga(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s(M), s(N), Val)
U1_aga(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_aga(s(M), 0, Val)
U1_gaa(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_gaa(s(M), 0, Val)
U2_agg(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_agg(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_agg(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_agg(s(M), s(N), Val)
U1_agg(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_agg(s(M), 0, Val)
U1_gag(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_gag(s(M), 0, Val)
ackermann_in_gag(s(M), s(N), Val) → U2_gag(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gag(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gag(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_gag(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_gag(s(M), s(N), Val)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
ackermann_in_gag(0, N, s(N)) → ackermann_out_gag(0, N, s(N))
ackermann_in_gag(s(M), 0, Val) → U1_gag(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(0, N, s(N)) → ackermann_out_agg(0, N, s(N))
ackermann_in_agg(s(M), 0, Val) → U1_agg(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(s(M), s(N), Val) → U2_agg(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(0, N, s(N)) → ackermann_out_gaa(0, N, s(N))
ackermann_in_gaa(s(M), 0, Val) → U1_gaa(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(0, N, s(N)) → ackermann_out_aga(0, N, s(N))
ackermann_in_aga(s(M), 0, Val) → U1_aga(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(s(M), s(N), Val) → U2_aga(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(s(M), s(N), Val) → U2_gaa(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gaa(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gaa(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_gaa(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s(M), s(N), Val)
U2_aga(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_aga(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_aga(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s(M), s(N), Val)
U1_aga(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_aga(s(M), 0, Val)
U1_gaa(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_gaa(s(M), 0, Val)
U2_agg(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_agg(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_agg(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_agg(s(M), s(N), Val)
U1_agg(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_agg(s(M), 0, Val)
U1_gag(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_gag(s(M), 0, Val)
ackermann_in_gag(s(M), s(N), Val) → U2_gag(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gag(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gag(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_gag(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_gag(s(M), s(N), Val)
ACKERMANN_IN_GAG(s(M), 0, Val) → U1_GAG(M, Val, ackermann_in_agg(M, s(0), Val))
ACKERMANN_IN_GAG(s(M), 0, Val) → ACKERMANN_IN_AGG(M, s(0), Val)
ACKERMANN_IN_AGG(s(M), 0, Val) → U1_AGG(M, Val, ackermann_in_agg(M, s(0), Val))
ACKERMANN_IN_AGG(s(M), 0, Val) → ACKERMANN_IN_AGG(M, s(0), Val)
ACKERMANN_IN_AGG(s(M), s(N), Val) → U2_AGG(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_AGG(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
ACKERMANN_IN_GAA(s(M), 0, Val) → U1_GAA(M, Val, ackermann_in_aga(M, s(0), Val))
ACKERMANN_IN_GAA(s(M), 0, Val) → ACKERMANN_IN_AGA(M, s(0), Val)
ACKERMANN_IN_AGA(s(M), 0, Val) → U1_AGA(M, Val, ackermann_in_aga(M, s(0), Val))
ACKERMANN_IN_AGA(s(M), 0, Val) → ACKERMANN_IN_AGA(M, s(0), Val)
ACKERMANN_IN_AGA(s(M), s(N), Val) → U2_AGA(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_AGA(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
ACKERMANN_IN_GAA(s(M), s(N), Val) → U2_GAA(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_GAA(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
U2_GAA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_GAA(M, N, Val, ackermann_in_aga(M, Val1, Val))
U2_GAA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGA(M, Val1, Val)
U2_AGA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_AGA(M, N, Val, ackermann_in_aga(M, Val1, Val))
U2_AGA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGA(M, Val1, Val)
U2_AGG(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_AGG(M, N, Val, ackermann_in_agg(M, Val1, Val))
U2_AGG(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGG(M, Val1, Val)
ACKERMANN_IN_GAG(s(M), s(N), Val) → U2_GAG(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_GAG(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
U2_GAG(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_GAG(M, N, Val, ackermann_in_agg(M, Val1, Val))
U2_GAG(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGG(M, Val1, Val)
ackermann_in_gag(0, N, s(N)) → ackermann_out_gag(0, N, s(N))
ackermann_in_gag(s(M), 0, Val) → U1_gag(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(0, N, s(N)) → ackermann_out_agg(0, N, s(N))
ackermann_in_agg(s(M), 0, Val) → U1_agg(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(s(M), s(N), Val) → U2_agg(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(0, N, s(N)) → ackermann_out_gaa(0, N, s(N))
ackermann_in_gaa(s(M), 0, Val) → U1_gaa(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(0, N, s(N)) → ackermann_out_aga(0, N, s(N))
ackermann_in_aga(s(M), 0, Val) → U1_aga(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(s(M), s(N), Val) → U2_aga(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(s(M), s(N), Val) → U2_gaa(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gaa(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gaa(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_gaa(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s(M), s(N), Val)
U2_aga(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_aga(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_aga(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s(M), s(N), Val)
U1_aga(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_aga(s(M), 0, Val)
U1_gaa(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_gaa(s(M), 0, Val)
U2_agg(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_agg(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_agg(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_agg(s(M), s(N), Val)
U1_agg(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_agg(s(M), 0, Val)
U1_gag(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_gag(s(M), 0, Val)
ackermann_in_gag(s(M), s(N), Val) → U2_gag(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gag(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gag(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_gag(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_gag(s(M), s(N), Val)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
ACKERMANN_IN_GAG(s(M), 0, Val) → U1_GAG(M, Val, ackermann_in_agg(M, s(0), Val))
ACKERMANN_IN_GAG(s(M), 0, Val) → ACKERMANN_IN_AGG(M, s(0), Val)
ACKERMANN_IN_AGG(s(M), 0, Val) → U1_AGG(M, Val, ackermann_in_agg(M, s(0), Val))
ACKERMANN_IN_AGG(s(M), 0, Val) → ACKERMANN_IN_AGG(M, s(0), Val)
ACKERMANN_IN_AGG(s(M), s(N), Val) → U2_AGG(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_AGG(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
ACKERMANN_IN_GAA(s(M), 0, Val) → U1_GAA(M, Val, ackermann_in_aga(M, s(0), Val))
ACKERMANN_IN_GAA(s(M), 0, Val) → ACKERMANN_IN_AGA(M, s(0), Val)
ACKERMANN_IN_AGA(s(M), 0, Val) → U1_AGA(M, Val, ackermann_in_aga(M, s(0), Val))
ACKERMANN_IN_AGA(s(M), 0, Val) → ACKERMANN_IN_AGA(M, s(0), Val)
ACKERMANN_IN_AGA(s(M), s(N), Val) → U2_AGA(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_AGA(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
ACKERMANN_IN_GAA(s(M), s(N), Val) → U2_GAA(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_GAA(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
U2_GAA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_GAA(M, N, Val, ackermann_in_aga(M, Val1, Val))
U2_GAA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGA(M, Val1, Val)
U2_AGA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_AGA(M, N, Val, ackermann_in_aga(M, Val1, Val))
U2_AGA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGA(M, Val1, Val)
U2_AGG(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_AGG(M, N, Val, ackermann_in_agg(M, Val1, Val))
U2_AGG(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGG(M, Val1, Val)
ACKERMANN_IN_GAG(s(M), s(N), Val) → U2_GAG(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_GAG(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
U2_GAG(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_GAG(M, N, Val, ackermann_in_agg(M, Val1, Val))
U2_GAG(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGG(M, Val1, Val)
ackermann_in_gag(0, N, s(N)) → ackermann_out_gag(0, N, s(N))
ackermann_in_gag(s(M), 0, Val) → U1_gag(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(0, N, s(N)) → ackermann_out_agg(0, N, s(N))
ackermann_in_agg(s(M), 0, Val) → U1_agg(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(s(M), s(N), Val) → U2_agg(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(0, N, s(N)) → ackermann_out_gaa(0, N, s(N))
ackermann_in_gaa(s(M), 0, Val) → U1_gaa(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(0, N, s(N)) → ackermann_out_aga(0, N, s(N))
ackermann_in_aga(s(M), 0, Val) → U1_aga(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(s(M), s(N), Val) → U2_aga(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(s(M), s(N), Val) → U2_gaa(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gaa(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gaa(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_gaa(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s(M), s(N), Val)
U2_aga(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_aga(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_aga(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s(M), s(N), Val)
U1_aga(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_aga(s(M), 0, Val)
U1_gaa(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_gaa(s(M), 0, Val)
U2_agg(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_agg(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_agg(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_agg(s(M), s(N), Val)
U1_agg(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_agg(s(M), 0, Val)
U1_gag(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_gag(s(M), 0, Val)
ackermann_in_gag(s(M), s(N), Val) → U2_gag(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gag(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gag(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_gag(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_gag(s(M), s(N), Val)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
ACKERMANN_IN_GAA(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
ACKERMANN_IN_AGA(s(M), s(N), Val) → U2_AGA(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_GAA(s(M), s(N), Val) → U2_GAA(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_AGA(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
U2_AGA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGA(M, Val1, Val)
U2_GAA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGA(M, Val1, Val)
ACKERMANN_IN_AGA(s(M), 0, Val) → ACKERMANN_IN_AGA(M, s(0), Val)
ACKERMANN_IN_GAA(s(M), 0, Val) → ACKERMANN_IN_AGA(M, s(0), Val)
ackermann_in_gag(0, N, s(N)) → ackermann_out_gag(0, N, s(N))
ackermann_in_gag(s(M), 0, Val) → U1_gag(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(0, N, s(N)) → ackermann_out_agg(0, N, s(N))
ackermann_in_agg(s(M), 0, Val) → U1_agg(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(s(M), s(N), Val) → U2_agg(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(0, N, s(N)) → ackermann_out_gaa(0, N, s(N))
ackermann_in_gaa(s(M), 0, Val) → U1_gaa(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(0, N, s(N)) → ackermann_out_aga(0, N, s(N))
ackermann_in_aga(s(M), 0, Val) → U1_aga(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(s(M), s(N), Val) → U2_aga(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(s(M), s(N), Val) → U2_gaa(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gaa(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gaa(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_gaa(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s(M), s(N), Val)
U2_aga(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_aga(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_aga(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s(M), s(N), Val)
U1_aga(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_aga(s(M), 0, Val)
U1_gaa(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_gaa(s(M), 0, Val)
U2_agg(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_agg(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_agg(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_agg(s(M), s(N), Val)
U1_agg(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_agg(s(M), 0, Val)
U1_gag(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_gag(s(M), 0, Val)
ackermann_in_gag(s(M), s(N), Val) → U2_gag(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gag(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gag(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_gag(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_gag(s(M), s(N), Val)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
ACKERMANN_IN_GAA(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
ACKERMANN_IN_AGA(s(M), s(N), Val) → U2_AGA(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_GAA(s(M), s(N), Val) → U2_GAA(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ACKERMANN_IN_AGA(s(M), s(N), Val) → ACKERMANN_IN_GAA(s(M), N, Val1)
U2_AGA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGA(M, Val1, Val)
U2_GAA(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGA(M, Val1, Val)
ACKERMANN_IN_AGA(s(M), 0, Val) → ACKERMANN_IN_AGA(M, s(0), Val)
ACKERMANN_IN_GAA(s(M), 0, Val) → ACKERMANN_IN_AGA(M, s(0), Val)
ackermann_in_gaa(s(M), 0, Val) → U1_gaa(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_gaa(s(M), s(N), Val) → U2_gaa(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U1_gaa(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_gaa(s(M), 0, Val)
U2_gaa(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gaa(M, N, Val, ackermann_in_aga(M, Val1, Val))
ackermann_in_aga(0, N, s(N)) → ackermann_out_aga(0, N, s(N))
ackermann_in_aga(s(M), s(N), Val) → U2_aga(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U3_gaa(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s(M), s(N), Val)
U2_aga(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_aga(M, N, Val, ackermann_in_aga(M, Val1, Val))
ackermann_in_aga(s(M), 0, Val) → U1_aga(M, Val, ackermann_in_aga(M, s(0), Val))
U3_aga(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s(M), s(N), Val)
U1_aga(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_aga(s(M), 0, Val)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
↳ PiDP
ACKERMANN_IN_AGA(0) → ACKERMANN_IN_AGA(s)
U2_GAA(ackermann_out_gaa(s, Val1)) → ACKERMANN_IN_AGA(Val1)
ACKERMANN_IN_GAA(s) → U2_GAA(ackermann_in_gaa(s))
U2_AGA(ackermann_out_gaa(s, Val1)) → ACKERMANN_IN_AGA(Val1)
ACKERMANN_IN_AGA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_AGA(s) → U2_AGA(ackermann_in_gaa(s))
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_AGA(s)
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, s, Val)) → ackermann_out_gaa(s, Val)
U2_gaa(ackermann_out_gaa(s, Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, N, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s, Val)
U2_aga(ackermann_out_gaa(s, Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s, s, Val)
U1_aga(ackermann_out_aga(M, s, Val)) → ackermann_out_aga(s, 0, Val)
ackermann_in_gaa(x0)
U1_gaa(x0)
U2_gaa(x0)
ackermann_in_aga(x0)
U3_gaa(x0)
U2_aga(x0)
U3_aga(x0)
U1_aga(x0)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ACKERMANN_IN_AGA(0) → ACKERMANN_IN_AGA(s)
Used ordering: Polynomial interpretation [25]:
U2_GAA(ackermann_out_gaa(s, Val1)) → ACKERMANN_IN_AGA(Val1)
ACKERMANN_IN_GAA(s) → U2_GAA(ackermann_in_gaa(s))
U2_AGA(ackermann_out_gaa(s, Val1)) → ACKERMANN_IN_AGA(Val1)
ACKERMANN_IN_AGA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_AGA(s) → U2_AGA(ackermann_in_gaa(s))
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_AGA(s)
POL(0) = 1
POL(ACKERMANN_IN_AGA(x1)) = x1
POL(ACKERMANN_IN_GAA(x1)) = 0
POL(U1_aga(x1)) = x1
POL(U1_gaa(x1)) = x1
POL(U2_AGA(x1)) = x1
POL(U2_GAA(x1)) = x1
POL(U2_aga(x1)) = x1
POL(U2_gaa(x1)) = x1
POL(U3_aga(x1)) = x1
POL(U3_gaa(x1)) = x1
POL(ackermann_in_aga(x1)) = 0
POL(ackermann_in_gaa(x1)) = 0
POL(ackermann_out_aga(x1, x2, x3)) = x3
POL(ackermann_out_gaa(x1, x2)) = x2
POL(s) = 0
U3_gaa(ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s, Val)
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U2_aga(ackermann_out_gaa(s, Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_aga(N) → ackermann_out_aga(0, N, s)
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s, s, Val)
U2_gaa(ackermann_out_gaa(s, Val1)) → U3_gaa(ackermann_in_aga(Val1))
U1_gaa(ackermann_out_aga(M, s, Val)) → ackermann_out_gaa(s, Val)
U1_aga(ackermann_out_aga(M, s, Val)) → ackermann_out_aga(s, 0, Val)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ PiDP
U2_GAA(ackermann_out_gaa(s, Val1)) → ACKERMANN_IN_AGA(Val1)
ACKERMANN_IN_GAA(s) → U2_GAA(ackermann_in_gaa(s))
ACKERMANN_IN_AGA(s) → ACKERMANN_IN_GAA(s)
U2_AGA(ackermann_out_gaa(s, Val1)) → ACKERMANN_IN_AGA(Val1)
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_AGA(s) → U2_AGA(ackermann_in_gaa(s))
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_AGA(s)
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, s, Val)) → ackermann_out_gaa(s, Val)
U2_gaa(ackermann_out_gaa(s, Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, N, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s, Val)
U2_aga(ackermann_out_gaa(s, Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s, s, Val)
U1_aga(ackermann_out_aga(M, s, Val)) → ackermann_out_aga(s, 0, Val)
ackermann_in_gaa(x0)
U1_gaa(x0)
U2_gaa(x0)
ackermann_in_aga(x0)
U3_gaa(x0)
U2_aga(x0)
U3_aga(x0)
U1_aga(x0)
ACKERMANN_IN_GAA(s) → U2_GAA(U2_gaa(ackermann_in_gaa(s)))
ACKERMANN_IN_GAA(s) → U2_GAA(U1_gaa(ackermann_in_aga(s)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ PiDP
U2_GAA(ackermann_out_gaa(s, Val1)) → ACKERMANN_IN_AGA(Val1)
ACKERMANN_IN_GAA(s) → U2_GAA(U2_gaa(ackermann_in_gaa(s)))
ACKERMANN_IN_GAA(s) → U2_GAA(U1_gaa(ackermann_in_aga(s)))
U2_AGA(ackermann_out_gaa(s, Val1)) → ACKERMANN_IN_AGA(Val1)
ACKERMANN_IN_AGA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_AGA(s) → U2_AGA(ackermann_in_gaa(s))
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_AGA(s)
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, s, Val)) → ackermann_out_gaa(s, Val)
U2_gaa(ackermann_out_gaa(s, Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, N, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s, Val)
U2_aga(ackermann_out_gaa(s, Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s, s, Val)
U1_aga(ackermann_out_aga(M, s, Val)) → ackermann_out_aga(s, 0, Val)
ackermann_in_gaa(x0)
U1_gaa(x0)
U2_gaa(x0)
ackermann_in_aga(x0)
U3_gaa(x0)
U2_aga(x0)
U3_aga(x0)
U1_aga(x0)
ACKERMANN_IN_AGA(s) → U2_AGA(U1_gaa(ackermann_in_aga(s)))
ACKERMANN_IN_AGA(s) → U2_AGA(U2_gaa(ackermann_in_gaa(s)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ ForwardInstantiation
↳ PiDP
U2_GAA(ackermann_out_gaa(s, Val1)) → ACKERMANN_IN_AGA(Val1)
ACKERMANN_IN_GAA(s) → U2_GAA(U2_gaa(ackermann_in_gaa(s)))
ACKERMANN_IN_AGA(s) → U2_AGA(U2_gaa(ackermann_in_gaa(s)))
ACKERMANN_IN_GAA(s) → U2_GAA(U1_gaa(ackermann_in_aga(s)))
ACKERMANN_IN_AGA(s) → ACKERMANN_IN_GAA(s)
U2_AGA(ackermann_out_gaa(s, Val1)) → ACKERMANN_IN_AGA(Val1)
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_AGA(s) → U2_AGA(U1_gaa(ackermann_in_aga(s)))
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_AGA(s)
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, s, Val)) → ackermann_out_gaa(s, Val)
U2_gaa(ackermann_out_gaa(s, Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, N, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s, Val)
U2_aga(ackermann_out_gaa(s, Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s, s, Val)
U1_aga(ackermann_out_aga(M, s, Val)) → ackermann_out_aga(s, 0, Val)
ackermann_in_gaa(x0)
U1_gaa(x0)
U2_gaa(x0)
ackermann_in_aga(x0)
U3_gaa(x0)
U2_aga(x0)
U3_aga(x0)
U1_aga(x0)
U2_GAA(ackermann_out_gaa(s, s)) → ACKERMANN_IN_AGA(s)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ PiDP
ACKERMANN_IN_GAA(s) → U2_GAA(U2_gaa(ackermann_in_gaa(s)))
U2_GAA(ackermann_out_gaa(s, s)) → ACKERMANN_IN_AGA(s)
ACKERMANN_IN_GAA(s) → U2_GAA(U1_gaa(ackermann_in_aga(s)))
ACKERMANN_IN_AGA(s) → U2_AGA(U2_gaa(ackermann_in_gaa(s)))
U2_AGA(ackermann_out_gaa(s, Val1)) → ACKERMANN_IN_AGA(Val1)
ACKERMANN_IN_AGA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_AGA(s) → U2_AGA(U1_gaa(ackermann_in_aga(s)))
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_AGA(s)
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, s, Val)) → ackermann_out_gaa(s, Val)
U2_gaa(ackermann_out_gaa(s, Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, N, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s, Val)
U2_aga(ackermann_out_gaa(s, Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s, s, Val)
U1_aga(ackermann_out_aga(M, s, Val)) → ackermann_out_aga(s, 0, Val)
ackermann_in_gaa(x0)
U1_gaa(x0)
U2_gaa(x0)
ackermann_in_aga(x0)
U3_gaa(x0)
U2_aga(x0)
U3_aga(x0)
U1_aga(x0)
U2_AGA(ackermann_out_gaa(s, s)) → ACKERMANN_IN_AGA(s)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ NonTerminationProof
↳ PiDP
ACKERMANN_IN_GAA(s) → U2_GAA(U2_gaa(ackermann_in_gaa(s)))
ACKERMANN_IN_AGA(s) → U2_AGA(U2_gaa(ackermann_in_gaa(s)))
ACKERMANN_IN_GAA(s) → U2_GAA(U1_gaa(ackermann_in_aga(s)))
U2_GAA(ackermann_out_gaa(s, s)) → ACKERMANN_IN_AGA(s)
ACKERMANN_IN_AGA(s) → ACKERMANN_IN_GAA(s)
U2_AGA(ackermann_out_gaa(s, s)) → ACKERMANN_IN_AGA(s)
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_AGA(s) → U2_AGA(U1_gaa(ackermann_in_aga(s)))
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_AGA(s)
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, s, Val)) → ackermann_out_gaa(s, Val)
U2_gaa(ackermann_out_gaa(s, Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, N, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s, Val)
U2_aga(ackermann_out_gaa(s, Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s, s, Val)
U1_aga(ackermann_out_aga(M, s, Val)) → ackermann_out_aga(s, 0, Val)
ackermann_in_gaa(x0)
U1_gaa(x0)
U2_gaa(x0)
ackermann_in_aga(x0)
U3_gaa(x0)
U2_aga(x0)
U3_aga(x0)
U1_aga(x0)
ACKERMANN_IN_GAA(s) → U2_GAA(U2_gaa(ackermann_in_gaa(s)))
ACKERMANN_IN_AGA(s) → U2_AGA(U2_gaa(ackermann_in_gaa(s)))
ACKERMANN_IN_GAA(s) → U2_GAA(U1_gaa(ackermann_in_aga(s)))
U2_GAA(ackermann_out_gaa(s, s)) → ACKERMANN_IN_AGA(s)
ACKERMANN_IN_AGA(s) → ACKERMANN_IN_GAA(s)
U2_AGA(ackermann_out_gaa(s, s)) → ACKERMANN_IN_AGA(s)
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_GAA(s)
ACKERMANN_IN_AGA(s) → U2_AGA(U1_gaa(ackermann_in_aga(s)))
ACKERMANN_IN_GAA(s) → ACKERMANN_IN_AGA(s)
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, s, Val)) → ackermann_out_gaa(s, Val)
U2_gaa(ackermann_out_gaa(s, Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, N, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s, Val)
U2_aga(ackermann_out_gaa(s, Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s, s, Val)
U1_aga(ackermann_out_aga(M, s, Val)) → ackermann_out_aga(s, 0, Val)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
ACKERMANN_IN_AGG(s(M), s(N), Val) → U2_AGG(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_AGG(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGG(M, Val1, Val)
ACKERMANN_IN_AGG(s(M), 0, Val) → ACKERMANN_IN_AGG(M, s(0), Val)
ackermann_in_gag(0, N, s(N)) → ackermann_out_gag(0, N, s(N))
ackermann_in_gag(s(M), 0, Val) → U1_gag(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(0, N, s(N)) → ackermann_out_agg(0, N, s(N))
ackermann_in_agg(s(M), 0, Val) → U1_agg(M, Val, ackermann_in_agg(M, s(0), Val))
ackermann_in_agg(s(M), s(N), Val) → U2_agg(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(0, N, s(N)) → ackermann_out_gaa(0, N, s(N))
ackermann_in_gaa(s(M), 0, Val) → U1_gaa(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(0, N, s(N)) → ackermann_out_aga(0, N, s(N))
ackermann_in_aga(s(M), 0, Val) → U1_aga(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_aga(s(M), s(N), Val) → U2_aga(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
ackermann_in_gaa(s(M), s(N), Val) → U2_gaa(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gaa(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gaa(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_gaa(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s(M), s(N), Val)
U2_aga(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_aga(M, N, Val, ackermann_in_aga(M, Val1, Val))
U3_aga(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s(M), s(N), Val)
U1_aga(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_aga(s(M), 0, Val)
U1_gaa(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_gaa(s(M), 0, Val)
U2_agg(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_agg(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_agg(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_agg(s(M), s(N), Val)
U1_agg(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_agg(s(M), 0, Val)
U1_gag(M, Val, ackermann_out_agg(M, s(0), Val)) → ackermann_out_gag(s(M), 0, Val)
ackermann_in_gag(s(M), s(N), Val) → U2_gag(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_gag(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gag(M, N, Val, ackermann_in_agg(M, Val1, Val))
U3_gag(M, N, Val, ackermann_out_agg(M, Val1, Val)) → ackermann_out_gag(s(M), s(N), Val)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
ACKERMANN_IN_AGG(s(M), s(N), Val) → U2_AGG(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U2_AGG(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → ACKERMANN_IN_AGG(M, Val1, Val)
ACKERMANN_IN_AGG(s(M), 0, Val) → ACKERMANN_IN_AGG(M, s(0), Val)
ackermann_in_gaa(s(M), 0, Val) → U1_gaa(M, Val, ackermann_in_aga(M, s(0), Val))
ackermann_in_gaa(s(M), s(N), Val) → U2_gaa(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U1_gaa(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_gaa(s(M), 0, Val)
U2_gaa(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_gaa(M, N, Val, ackermann_in_aga(M, Val1, Val))
ackermann_in_aga(0, N, s(N)) → ackermann_out_aga(0, N, s(N))
ackermann_in_aga(s(M), s(N), Val) → U2_aga(M, N, Val, ackermann_in_gaa(s(M), N, Val1))
U3_gaa(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s(M), s(N), Val)
U2_aga(M, N, Val, ackermann_out_gaa(s(M), N, Val1)) → U3_aga(M, N, Val, ackermann_in_aga(M, Val1, Val))
ackermann_in_aga(s(M), 0, Val) → U1_aga(M, Val, ackermann_in_aga(M, s(0), Val))
U3_aga(M, N, Val, ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s(M), s(N), Val)
U1_aga(M, Val, ackermann_out_aga(M, s(0), Val)) → ackermann_out_aga(s(M), 0, Val)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
ACKERMANN_IN_AGG(0, Val) → ACKERMANN_IN_AGG(s, Val)
U2_AGG(Val, ackermann_out_gaa(s, Val1)) → ACKERMANN_IN_AGG(Val1, Val)
ACKERMANN_IN_AGG(s, Val) → U2_AGG(Val, ackermann_in_gaa(s))
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, s, Val)) → ackermann_out_gaa(s, Val)
U2_gaa(ackermann_out_gaa(s, Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, N, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s, Val)
U2_aga(ackermann_out_gaa(s, Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s, s, Val)
U1_aga(ackermann_out_aga(M, s, Val)) → ackermann_out_aga(s, 0, Val)
ackermann_in_gaa(x0)
U1_gaa(x0)
U2_gaa(x0)
ackermann_in_aga(x0)
U3_gaa(x0)
U2_aga(x0)
U3_aga(x0)
U1_aga(x0)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ACKERMANN_IN_AGG(0, Val) → ACKERMANN_IN_AGG(s, Val)
Used ordering: Polynomial interpretation [25]:
U2_AGG(Val, ackermann_out_gaa(s, Val1)) → ACKERMANN_IN_AGG(Val1, Val)
ACKERMANN_IN_AGG(s, Val) → U2_AGG(Val, ackermann_in_gaa(s))
POL(0) = 1
POL(ACKERMANN_IN_AGG(x1, x2)) = x1
POL(U1_aga(x1)) = x1
POL(U1_gaa(x1)) = x1
POL(U2_AGG(x1, x2)) = x2
POL(U2_aga(x1)) = x1
POL(U2_gaa(x1)) = 0
POL(U3_aga(x1)) = x1
POL(U3_gaa(x1)) = x1
POL(ackermann_in_aga(x1)) = 0
POL(ackermann_in_gaa(x1)) = 0
POL(ackermann_out_aga(x1, x2, x3)) = x3
POL(ackermann_out_gaa(x1, x2)) = x2
POL(s) = 0
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U2_gaa(ackermann_out_gaa(s, Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
U2_aga(ackermann_out_gaa(s, Val1)) → U3_aga(ackermann_in_aga(Val1))
U1_gaa(ackermann_out_aga(M, s, Val)) → ackermann_out_gaa(s, Val)
U3_aga(ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s, s, Val)
ackermann_in_aga(N) → ackermann_out_aga(0, N, s)
U1_aga(ackermann_out_aga(M, s, Val)) → ackermann_out_aga(s, 0, Val)
U3_gaa(ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s, Val)
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
U2_AGG(Val, ackermann_out_gaa(s, Val1)) → ACKERMANN_IN_AGG(Val1, Val)
ACKERMANN_IN_AGG(s, Val) → U2_AGG(Val, ackermann_in_gaa(s))
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, s, Val)) → ackermann_out_gaa(s, Val)
U2_gaa(ackermann_out_gaa(s, Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, N, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s, Val)
U2_aga(ackermann_out_gaa(s, Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s, s, Val)
U1_aga(ackermann_out_aga(M, s, Val)) → ackermann_out_aga(s, 0, Val)
ackermann_in_gaa(x0)
U1_gaa(x0)
U2_gaa(x0)
ackermann_in_aga(x0)
U3_gaa(x0)
U2_aga(x0)
U3_aga(x0)
U1_aga(x0)
ACKERMANN_IN_AGG(s, y0) → U2_AGG(y0, U1_gaa(ackermann_in_aga(s)))
ACKERMANN_IN_AGG(s, y0) → U2_AGG(y0, U2_gaa(ackermann_in_gaa(s)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ QDP
↳ ForwardInstantiation
ACKERMANN_IN_AGG(s, y0) → U2_AGG(y0, U1_gaa(ackermann_in_aga(s)))
ACKERMANN_IN_AGG(s, y0) → U2_AGG(y0, U2_gaa(ackermann_in_gaa(s)))
U2_AGG(Val, ackermann_out_gaa(s, Val1)) → ACKERMANN_IN_AGG(Val1, Val)
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, s, Val)) → ackermann_out_gaa(s, Val)
U2_gaa(ackermann_out_gaa(s, Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, N, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s, Val)
U2_aga(ackermann_out_gaa(s, Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s, s, Val)
U1_aga(ackermann_out_aga(M, s, Val)) → ackermann_out_aga(s, 0, Val)
ackermann_in_gaa(x0)
U1_gaa(x0)
U2_gaa(x0)
ackermann_in_aga(x0)
U3_gaa(x0)
U2_aga(x0)
U3_aga(x0)
U1_aga(x0)
U2_AGG(x0, ackermann_out_gaa(s, s)) → ACKERMANN_IN_AGG(s, x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ Narrowing
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ NonTerminationProof
ACKERMANN_IN_AGG(s, y0) → U2_AGG(y0, U1_gaa(ackermann_in_aga(s)))
ACKERMANN_IN_AGG(s, y0) → U2_AGG(y0, U2_gaa(ackermann_in_gaa(s)))
U2_AGG(x0, ackermann_out_gaa(s, s)) → ACKERMANN_IN_AGG(s, x0)
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, s, Val)) → ackermann_out_gaa(s, Val)
U2_gaa(ackermann_out_gaa(s, Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, N, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s, Val)
U2_aga(ackermann_out_gaa(s, Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s, s, Val)
U1_aga(ackermann_out_aga(M, s, Val)) → ackermann_out_aga(s, 0, Val)
ackermann_in_gaa(x0)
U1_gaa(x0)
U2_gaa(x0)
ackermann_in_aga(x0)
U3_gaa(x0)
U2_aga(x0)
U3_aga(x0)
U1_aga(x0)
ACKERMANN_IN_AGG(s, y0) → U2_AGG(y0, U1_gaa(ackermann_in_aga(s)))
ACKERMANN_IN_AGG(s, y0) → U2_AGG(y0, U2_gaa(ackermann_in_gaa(s)))
U2_AGG(x0, ackermann_out_gaa(s, s)) → ACKERMANN_IN_AGG(s, x0)
ackermann_in_gaa(s) → U1_gaa(ackermann_in_aga(s))
ackermann_in_gaa(s) → U2_gaa(ackermann_in_gaa(s))
U1_gaa(ackermann_out_aga(M, s, Val)) → ackermann_out_gaa(s, Val)
U2_gaa(ackermann_out_gaa(s, Val1)) → U3_gaa(ackermann_in_aga(Val1))
ackermann_in_aga(N) → ackermann_out_aga(0, N, s)
ackermann_in_aga(s) → U2_aga(ackermann_in_gaa(s))
U3_gaa(ackermann_out_aga(M, Val1, Val)) → ackermann_out_gaa(s, Val)
U2_aga(ackermann_out_gaa(s, Val1)) → U3_aga(ackermann_in_aga(Val1))
ackermann_in_aga(0) → U1_aga(ackermann_in_aga(s))
U3_aga(ackermann_out_aga(M, Val1, Val)) → ackermann_out_aga(s, s, Val)
U1_aga(ackermann_out_aga(M, s, Val)) → ackermann_out_aga(s, 0, Val)